home *** CD-ROM | disk | FTP | other *** search
/ GFX Sensations 1 / Graphic Sensations - Volume 1.iso / tools / amiga / 3d_tools / rend10.lzh / REND1.0 / AMIGA_VR_TOOLKIT_NOTICE < prev    next >
Encoding:
Text File  |  1994-02-28  |  10.5 KB  |  238 lines

  1.  
  2. -------------------------------------------------------------------------------
  3.  
  4.                    AMIGA VR TOOLKIT 
  5.                    
  6.                   Pre-Release Notice
  7.             
  8.                    February 7, 1994
  9.             
  10.    A complex, flexible, and extremely powerful set of tools that will provide 
  11.              the basis for public domain VR software for the AMIGA.    
  12.          
  13.         written by  Michael P. Schenck  mps4466@ultb.isc.rit.edu
  14.  
  15. -------------------------------------------------------------------------------
  16.  
  17.     The AMIGA VR Toolkit is a library of classes and functions that
  18. integrate to provide a complete set of tools for constructing, visualizing
  19. and interacting with virtual environments.  The toolkit takes the form
  20. of an SAS/C 6.5 C++ linkable library.
  21.  
  22.     The toolkit is in development and is heading toward its
  23. first release.  A brief summary of the features that will be contained in the
  24. toolkit are described below.  Some of these have already been developed 
  25. while others are still in the design stage.  Much of the initial theory behind 
  26. the functionality of the toolkit is complete.  There are alot of details to be
  27. worked out and choices to be made.  If you are interested in having a hand in
  28. the final design of the toolkit, read the summary and follow the instructions
  29. at the end.
  30.  
  31.  
  32. ENVIRONMENT CONSTRUCTION AND CONTROL
  33. ------------------------------------
  34.  
  35.     PRIMITIVES
  36.  
  37.      A Primitive class allows primitives to be defined and used 
  38.      in Objects.  Control all aspects of a primitive such as points, 
  39.      polygons, colors of the polygons, and eventually things like 
  40.      textures and transparencies.
  41.     
  42.     TRANSFORMATIONS
  43.  
  44.      The Transformation class which is used to create the transformation
  45.      objects within the Control Classes contains a variety of standard
  46.      transformations, but can also be customized.  Some of the standard 
  47.      ones will be all the rotations, translations, scalings, shears, and
  48.      deformations.  To set the transformation to a rotation, just specify
  49.      the angle or angles.  It's that simple.  Setting your own customized
  50.      Matrix is just as easy.
  51.  
  52.     CONTROLS 
  53.      
  54.      Objects are controlled through the use of Control classes which add
  55.      control points and govern the movement and design of the Object.
  56.      There are standard and custom Control classes.  Some examples 
  57.      of standard ones are Hinge and Pivot.  Control classes can be made
  58.      by combining Transformation objects and other standard and custom
  59.      "governing" classes which help to control the manipulation of the
  60.      Transformations.  These "governing" classes could include classes 
  61.      for input such as a PowerGlove class or they could be Physical 
  62.      Model based classes or Artificial Intelligence based classes. 
  63.     
  64.     OBJECTS
  65.  
  66.      An Object class is comprised of Primitives and different Control 
  67.      classes that link together to make up and control the Object.  
  68.      Objects can be added and removed from different Worlds.  They can be
  69.      activated or deactivated which makes them a portion of the environment
  70.      or not.  Objects are the representation of the Entity that controls
  71.      them.  Simply, they represent the "bodies" of the Entities. 
  72.     
  73.     WORLDS 
  74.  
  75.             A World class groups Objects into a single environment which can be
  76.      handled individually.  Therefore, multiple worlds can be defined
  77.      and all rendered at once or individually.
  78.  
  79.     ENTITIES
  80.  
  81.      Entities represent the "soul" or the "essence" of an Object.  Objects
  82.      are just controllable bodies that exist in the environment.  Entities
  83.      give them thier function and thier "intelligence".  Entities are not
  84.      specific classes or functions, but a hierarchy of custom classes and 
  85.      functions within the application the toolkit is linked too.  These 
  86.      classes and functions are used to construct, initialize, and control
  87.      the Entity's Object within the environment.  They can be comprised of
  88.      logic and control routines or they could simply be a conduit for 
  89.      information that is being sent to the Object's Control and Primitive 
  90.      objects.  Entities can be built up of subclasses that each contain
  91.      a Primitive or Primitives and Control objects which comprise a 
  92.      "portion" of the entire Entity.  These subclasses provide the 
  93.      "essence" for a single portion of the Entity and can be duplicated
  94.      just like copying a variable.  For example, you could create a virtual
  95.      robot spider where each leg would be a different object of the same
  96.      subclass and they all would be controlled from a single body object! 
  97.  
  98.         
  99. ENVIRONMENT VISUALIZATION AND RESPONSE
  100. --------------------------------------
  101.  
  102.     RENDERING ENGINE
  103.     
  104.      At the heart of the toolkit is a pipelined rendering engine.  The
  105.      pipeline will consist of two stages.  The first stage will be handled 
  106.      by the CPU and will consist of updating any changes in any of the 
  107.      Worlds (converting primitive coords to world coords via a map of 
  108.      transformations for each changed object or portion of changed object
  109.      in each world), detecting collisions and reporting them to objects,
  110.      and creating a raster list of all polygons inside the view volume for
  111.      each Viewpoint.  The second stage is handled by the blitter.  It will
  112.      be fed the raster list by the CPU in the form of a continuous stream
  113.      of blits.  While the blitter is working, the CPU will be back to the
  114.      first stage of the pipeline working on the next frame (if any updates
  115.      or changes have occured in the environment).  The overhead in 
  116.      switching processes (to feed the blitter more raster ops) will be
  117.      minimal compared to the speed gained by having a pipeline.  This will
  118.      be especially true where the processor way outperforms the blitter.
  119.      Even if the CPU is fast, the blitter of course still governs the frame
  120.      rate due to its speed.  Therefore, the maximum frame rate will be 
  121.      much slower in machines with a slower blitter.  The difference between
  122.      AGA and ECS or OCS machines will be significant.  Just as the 
  123.      difference between AGA and AAA (if it ever comes out) will also be 
  124.      significant.  The optimum frame rate will be obtained where the time
  125.      to process a frame is approximately equivalent to the time to draw the
  126.      previous frame.  This equality is governed by the CPU speed, the 
  127.      overall blitter performance (clock rate and bandwidth which is 
  128.      dependent on the amount of DMA available to it), and the scene 
  129.      complexity from frame to frame.   
  130.     
  131.     GRAPHICS MODES
  132.     
  133.      The graphics supported by the rendering engine are wireframe and 
  134.      solid shaded polygons.  In the shaded polygon mode, special effects
  135.      may be added such as textures or transparency.  These of course will
  136.      come at a later date, but will be figured into the initial design.
  137.      Hidden surface removal is in the form of a painters algorithm
  138.      which will probably be modified.  This is to maintain a decent frame
  139.      rate and to remove most visual artifacts from the scene.
  140.           
  141.     LIGHTING
  142.          
  143.      Lighting is simple.  Primarily ambient light and a single light
  144.      vector.  This may get more complicated later.
  145.      
  146.     COLLISION DETECTION
  147.      
  148.     -Collision in the environment is optional, but designed in.  This
  149.      is due to the large amount of extra computation it requires.
  150.      
  151.             
  152. SYSTEM CONTROL AND INTERFACING    
  153. ------------------------------    
  154.  
  155.     VIEWPORTS AND VIEWPOINTS
  156.  
  157.      Viewport and Viewpoint classes provide multiple and simultaneous views
  158.      into one or more environments.  You can look at the same or different
  159.      worlds at the same time and from different positions.
  160.  
  161.     TEXT AND GRAPHICS
  162.  
  163.      Support for Text and Graphics through the Viewports.  These are in
  164.      the form of various functions and classes.
  165.  
  166.     SIMULATION TIMING
  167.  
  168.      A Timer class provides all the simulation timing required.  
  169.     
  170.     SOUND AND MUSIC
  171.     
  172.      Classes for sound and music which can be used in an Entity or
  173.      Control class.  This will come later, not a high priority.
  174.      
  175.     I/O INTERFACE
  176.      
  177.      Classes for linking I/O to Objects are in the form of Control
  178.      classes.  These use basic I/O classes and functions combined 
  179.      with Transformation objects to directly map input from the user to
  180.      the control point represented by the Transformation object(s). All the 
  181.      systems resources such as serial ports, parallel ports, the keyboard 
  182.      and the mouse will all be available through functions or classes
  183.      provided by the toolkit.
  184.  
  185.     COMPUTATION
  186.      
  187.      The core of the computation performed by the toolkit will be performed
  188.      in fixed point integer math, but it will seem from a an application
  189.      stand point that the toolkit uses floating point math.  This is to allow
  190.      applications to gain from using simplistic and accurate floating point
  191.      while the toolkit itself works in a tricker form of fixed point integer 
  192.      math.  Inputs into the toolkit (in floating point values) will have
  193.      to be limited in size.  This means that there will be a maximum
  194.      and minimum value imposed on the actual value of the numbers passed
  195.      in.  This will probably not cause a problem in nearly all situations.
  196.  
  197.  
  198. BENIFITS, PROBLEMS, AND PLANS
  199.  
  200.     The design for this toolkit is very strong in the creation and
  201. control of complex environments.  This is where it shines and is by far 
  202. the most important part.  But having a complex environment rendered at 2 
  203. frames a second isn't so good.  In my attempt to make this an extremly 
  204. powerful toolkit for AMIGA VR, I am also attempting to design a powerful
  205. enough rendering engine to back it up.  This requires alot of optimization, 
  206. tricks, and understanding to develop a fast rendering engine.  We do have
  207. the blitter to aid us, but it isn't the end all of aids for rendering!
  208. This toolkit, over time, will probably reflect the best effort possible
  209. to use the blitter for rendering complex 3D environments in conjuction
  210. with the CPU!  I am personally looking forward to AAA's increase in blitter
  211. speed which when combined with a 68060 or RISC CPU could give this toolkit
  212. that sharp edge provided by a robust frame rate!
  213.          
  214.     I am happy to say that this software will all be free.  I only ask that
  215. you participate in its development.  It could very well become the best 
  216. PD VR Toolkit around with a little work!  So...      
  217.     
  218.     IF YOU ARE INTERESTED IN THE DEVELOPMENTS OF THIS TOOLKIT AS IT
  219.     WORKS ITS WAY TO THE FIRST RELEASE AND WANT TO EXPRESS YOUR 
  220.     IDEAS AND/OR CONCERNS ABOUT THE DESIGN OF THE TOOLKIT OR JUST
  221.     WANT TO BE KEPT INFORMED OF ITS PROGRESS, SEND ME AN EMAIL MESSAGE
  222.     STATING SO AND I WILL PUT YOU ON A MAILING LIST AND KEEP YOU
  223.     UPDATED.  I AM LOOKING FOR INPUT IN THE DESIGN PROCESS BECAUSE
  224.     THIS IS BY FAR THE MOST IMPORTANT PART.  I WANT YOUR THOUGHTS,
  225.     CONCERNS, AND CRITICISMS!
  226.         
  227.         
  228.               Send email to...
  229.                     
  230.                 Michael P. Schenck
  231.            
  232.                         at
  233.            
  234.              mps4466@ultb.isc.rit.edu 
  235.         
  236.           
  237.      THANK YOU IN ADVANCE FOR YOUR INTEREST AND EFFORT    
  238.